/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package org.uca.dss.curso2011.grupo1.reservas;

import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.uca.dss.curso2011.grupo1.basededatos.DBUtils;
import org.uca.dss.curso2011.grupo1.clases.CargaCsv;
import org.uca.dss.curso2011.grupo1.clases.Hora;
import org.uca.dss.curso2011.grupo1.clases.InformacionReserva;
import org.uca.dss.curso2011.grupo1.clases.Reserva;

/**
 * Clase para cargar los datos de GestiónReservas y GestiónReservasExtendida.
 * Solución del DRY de ambas.
 * @author David & Alejandro
 */
public class CargaGestion {
    private List<Hora> horas;
    private List<InformacionReserva> informacionReserva;
    private List<Reserva> reservas;
    /**
     * Constructor que carga los datos de ficheros Csv.
     * @param nombreArchivoMediosTransportes Fichero que contiene la información de los mediosTransportes.
     * @param camposLíneaMínimoMediosTransportes Número de campos mínimos que debe tener cada línea de medioTransporte.
     * @param nombreArchivoTrayectos Fichero que contiene la información de los trayectos.
     * @param camposLíneaMínimoTrayectos Número de campos mínimos que debe tener cada línea de trayecto.
     */
    public CargaGestion(String nombreArchivoMedioTransporte,int camposLíneaMínimoMedioTransporte, String nombreArchivoTrayectos,int camposLíneaMínimoTrayectos){
        try {
            CargaCsv carga = new CargaCsv(nombreArchivoMedioTransporte, camposLíneaMínimoMedioTransporte, nombreArchivoTrayectos, camposLíneaMínimoTrayectos);
            this.horas = carga.obtieneHoras();
            List<Reserva> reservasDb = DBUtils.getDb().query(Reserva.class);
            this.reservas = new ArrayList<Reserva>(reservasDb);
            List<InformacionReserva> informacionReservasDb = DBUtils.getDb().query(InformacionReserva.class);
            this.informacionReserva = new ArrayList<InformacionReserva>(informacionReservasDb);

        } catch (FileNotFoundException ex) {
            throw new RuntimeException(ex.getMessage());
        } catch (IOException ex) {
            throw new RuntimeException(ex.getMessage());
        }

    }

    /**
     * Método que devuelve la lista de horas.
     * @return horas
     */
    public List<Hora> obtieneHoras() {
        return this.horas;
    }

    /**
     * Método que devuelve la lista de la información de las reservas.
     * @return informacionReserva
     */
    public List<InformacionReserva> obtieneInformacionReserva() {
        return this.informacionReserva;
    }

    /**
     * Método que devuelve las reservas.
     * @return reservas
     */
    public List<Reserva> obtieneReservas() {
        return this.reservas;
    }
}
